home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1998 August / PC Plus SuperCD 50a Issue 142 (CD142a) (August 1998).iso / trial / demon / TURNPIKE.1 / CLASSES.ZIP / sun / AWT / IMAGE / ImageFetcher.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-04-14  |  2.3 KB  |  114 lines

  1. package sun.awt.image;
  2.  
  3. import java.util.Vector;
  4.  
  5. class ImageFetcher extends Thread {
  6.    static Thread[] fetchers = new Thread[1];
  7.    static final int HIGH_PRIORITY = 8;
  8.    static final int LOW_PRIORITY = 3;
  9.    private static Vector waitList;
  10.  
  11.    private static ThreadGroup getImageFetcherThreadGroup() {
  12.       Thread var0 = Thread.currentThread();
  13.  
  14.       for(var2 = var0.group; var2.parent != null; var2 = var2.parent) {
  15.          ThreadGroup var1 = var2.parent;
  16.          if (var1.parent == null) {
  17.             break;
  18.          }
  19.       }
  20.  
  21.       return var2;
  22.    }
  23.  
  24.    private ImageFetcher() {
  25.       super(getImageFetcherThreadGroup(), "Image Fetcher");
  26.    }
  27.  
  28.    public static void add(ImageFetchable var0) {
  29.       Vector var1 = waitList;
  30.       synchronized(var1){}
  31.  
  32.       try {
  33.          Vector var3 = waitList;
  34.          if (var3.indexOf(var0, 0) < 0 && true) {
  35.             waitList.addElement(var0);
  36.             waitList.notify();
  37.          }
  38.       } catch (Throwable var6) {
  39.          throw var6;
  40.       }
  41.  
  42.    }
  43.  
  44.    public static boolean isFetcher(Thread var0) {
  45.       for(int var1 = 0; var1 < fetchers.length; ++var1) {
  46.          if (fetchers[var1] == var0) {
  47.             return true;
  48.          }
  49.       }
  50.  
  51.       return false;
  52.    }
  53.  
  54.    public static boolean amFetcher() {
  55.       return isFetcher(Thread.currentThread());
  56.    }
  57.  
  58.    private static ImageFetchable nextImage() {
  59.       Vector var0 = waitList;
  60.       synchronized(var0){}
  61.  
  62.       ImageFetchable var9;
  63.       try {
  64.          ImageFetchable var2 = null;
  65.  
  66.          while(var2 == null) {
  67.             Vector var3 = waitList;
  68.             if (var3.elementCount != 0) {
  69.                var2 = (ImageFetchable)waitList.elementAt(0);
  70.                waitList.removeElement(var2);
  71.             } else {
  72.                try {
  73.                   var3 = waitList;
  74.                   var3.wait(0L);
  75.                } catch (InterruptedException var6) {
  76.                   System.err.println("Image Fetcher interrupted!");
  77.                }
  78.             }
  79.          }
  80.  
  81.          var9 = var2;
  82.       } catch (Throwable var7) {
  83.          throw var7;
  84.       }
  85.  
  86.       return var9;
  87.    }
  88.  
  89.    public void run() {
  90.       while(true) {
  91.          Thread.currentThread().setPriority(8);
  92.          ImageFetchable var1 = nextImage();
  93.  
  94.          try {
  95.             var1.doFetch();
  96.          } catch (Exception var3) {
  97.             System.err.println("Uncaught error fetching image:");
  98.             ((Throwable)var3).printStackTrace();
  99.          }
  100.       }
  101.    }
  102.  
  103.    static {
  104.       for(int var0 = 0; var0 < fetchers.length; ++var0) {
  105.          Thread var1 = fetchers[var0] = new ImageFetcher();
  106.          var1.setName(var1.getName() + " " + var0);
  107.          var1.setDaemon(true);
  108.          var1.start();
  109.       }
  110.  
  111.       waitList = new Vector();
  112.    }
  113. }
  114.